type ReplaceAll<S extends string, From extends string, To extends string> = 
    From extends ""?S:S extends `${infer Left}${From}${infer Rest}`?`${Left}${To}${ReplaceAll<Rest,From,To>}`:S
// type Includes<
//   S1 extends string,
//   S2 extends string
// > = S1 extends `${infer Left}${S2}${infer Right}` ? true : false
//     type ReplaceAll<
//     S extends string,
//     MatchStr extends string,
//     ReplaceStr extends string
//   > = Includes<S, MatchStr> extends true
//     ? ReplaceAll<Replace<S, MatchStr, ReplaceStr>, MatchStr, ReplaceStr>
//     : S
